package mvn56.model;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;

//AspectJ的切面类
public class MyAspectJ {
	
	//前置通知/增强       连接点---能够获取目标对象的信息
	public void mybefore( JoinPoint jp) {
		System.out.println("前置通知被调用");
		System.out.println("获取目标对象："+jp.getTarget());
		System.out.println("获取目标方法："+jp.getSignature().getName());
	}
	
	//后置通知/增强       连接点---能够获取目标对象的信息
	public void myAfter( JoinPoint jp,Object output) {
		System.out.println("后置通知被调用");
		System.out.println("获取目标对象："+jp.getTarget());
		System.out.println("获取目标方法："+jp.getSignature().getName());
		System.out.println("方法的返回值为："+output);
	}
	
	
	//环绕通知/增强       连接点---能够获取目标对象的信息
	public Object myAround( ProceedingJoinPoint jp) throws Throwable {
		System.err.println("环绕通知被调用前");
		//调用目标对象的方法
		Object obj = jp.proceed();
		//Object obj = null;
		System.err.println("环绕通知被调用后");
		return obj;
	}

}
